package io.github.handyang.algorithms.sort;

public interface SortAlgorithms {

    void sort(int[] arr);

    default boolean less(int o1, int o2) {
        return o1 < o2;
    }

    default int minIndex(int[] arr, int... indexs) {
        int min = indexs[0];
        for (int index : indexs) {
            if (less(arr[index], arr[min])) min = index;
        }

        return min;
    }

    default void swap(int[] arr, int i, int j) {
        if (i == j) return;

        int t = arr[i];
        arr[i] = arr[j];
        arr[j] = t;
    }

    default void show(int[] arr) {
        for (int t : arr) {
            System.out.print(t + " ");
        }

        System.out.println();
    }

    default boolean isSorted(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            if (less(arr[i], arr[i - 1])) return false;
        }

        return true;
    }
}
